Announcement

Collapse
No announcement yet.

Nearly Half A Million Lines Of New Graphics Driver Code Sent In For Linux 5.19

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by user1 View Post

    I didn't say hybrid kernel is the problem. What I meant was only the way drivers are distributed on Windows (as you said). Btw, what makes you think monolithic and hybrid kernels are different in the way they handle device drivers? Unlike Microkernels, in both monolithic and hybrid kernels, device drivers work in kernel space. The only differences between Windows and Linux is the in-tree drivers which Windows lacks and the Stable ABI which Linux lacks.
    Well as you said, by definition a hybrid is a monolothic kernel that allows certain parts of it being loaded externally via an interface which is typically a stable ABI, so when you say

    Originally posted by user1 View Post
    And the fact that you need to have the newest Linux kernel to support new devices is solely because Linux lacks a stable ABI. It has nothing to do with the kernel design (hybrid or monolithic).
    You have answered your own question, the fact that Linux doesn't have a stable ABI (or "interface" for more microkernel friendly terminology) means that by definition its not a hybrid kernel. If Linux was to become a hybrid kernel it would need to create stable interface/s.
    Last edited by mdedetrich; 25 May 2022, 09:47 AM.

    Comment


    • #12
      Originally posted by mdedetrich View Post

      Well as you said, by definition a hybrid is a monolothic kernel that allows certain parts of it being loaded externally via an interface which is typically a stable ABI, so when you say.
      That's not what I said. I suggest read this so you'll understand what's the difference between hybrid and monolithic kernels. You seem to think that hybrid kernel design and stable ABI are synonymous, which isn't true. Solaris has a monolithic kernel just like Linux, but it has a stable ABI.

      Comment


      • #13
        Originally posted by user1 View Post

        That's not what I said. I suggest read this so you'll understand what's the difference between hybrid and monolithic kernels. You seem to think that hybrid kernel design and stable ABI are synonymous, which isn't true. Solaris has a monolithic kernel just like Linux, but it has a stable ABI.
        Firstly micro/hybrid/monolothic kernel are not set in stone definitions, they are broad categorizations.

        Secondly I don't know what part of Solaris you think has a stable ABI, if you are talking about the binary interface for userspace applications thats not what is meant by stable ABI wrt to drivers. Afaik Solaris doesn't have such as a stable ABI for drivers.

        When I was talking about stable ABI, I was specifically talking in context of communication between boundaries of drivers and the core kernel not binary level ABI which is something completely different. A different way of communication is via message passing (which is typical of microkernels) but this is not mandatory to satisfy the broadly accepted terminology being used (the main reason why stable ABI's are used rather than message passing in modern hybrid kernels is mainly because of performance, particularly relevant for graphics card drivers).
        Last edited by mdedetrich; 25 May 2022, 10:07 AM.

        Comment


        • #14
          I use modprobed-db to reduce the amount of kernel stuff being compiled. Saves quite allot of compile time.

          So not concerned with kernel getting bigger. I'm sure it will shrink a bit after a year or two also since this is all happening due to new hardware launches.

          Comment


          • #15
            Originally posted by uid313 View Post
            That is half a million lines of code too much in the kernel.
            Imagine if all the device drivers lived outside a little, secure, audited kernel.
            Most of that half million lines is register header files, which live outside the kernel anyways.

            I have always liked microkernel systems (in a previous life my team was one of the earliest adopters of QNX) but over the years I found that a message-passing interface between the components ended up being pretty limiting. Something like remote procedure calls gave a lot more flexibility, but then there is precious little difference between a microkernel and a monolithic kernel like Linux.
            Test signature

            Comment


            • #16
              Maybe use something similar to rump kernel https://wiki.netbsd.org/rumpkernel/

              Comment

              Working...
              X